#include "功能区.h"
#include "服务器与客户端.h"

void disable_echo(int fd)
{
     struct termios tty;
     tcgetattr(fd, &tty);
     tty.c_lflag &= ~ECHO;
     tcsetattr(fd, TCSANOW, &tty);
}

void enable_echo(int fd)
{
     struct termios tty;
     tcgetattr(fd, &tty);
     tty.c_lflag |= ECHO;
     tcsetattr(fd, TCSANOW, &tty);
}
void my_getpass(char *password, int length)
{
     int ch;
     int i = 0;

     disable_echo(STDIN_FILENO);

     while ((ch = getchar()) != '\n' && ch != EOF && i < length - 1)
     {
          password[i++] = ch;
          putchar('*');
     }

     password[i] = '\0';

     enable_echo(STDIN_FILENO);
     printf("\n");
}

int loginFun(int fd)
{
     printf("欢迎来到用户登录界面\n");
     W_REGIST lg;
     printf("请输入用户名:");
     scanf("%s", lg.name);
     getchar();
     printf("请输入密码:");
     my_getpass(lg.pwd, sizeof(lg.pwd));
     printf("你输入的用户:%s 密码长度:%zu\n", lg.name, strlen(lg.pwd));
     MSG msg;
     msg.type = W_login;
     // 把登录结构体的字节全部拷贝到消息结构体的数据数组中
     memcpy(msg.data, &lg, sizeof(lg));
     // 把消息发送给服务器
     send(fd, &msg, sizeof(msg), 0);
     // 接受从服务器返回的结果
     recv(fd, &msg, sizeof(msg), 0);
     if (msg.type == yes)
     {
          printf("恭喜你登录成功！\n");
          mainMenu(fd, lg);
     }
     else
     {
          printf("登录失败了!\n");
     }
}

int registFun(int fd)
{
     printf("欢迎来到用户注册界面\n");
     printf("请选择你的项目组\n");
     printf("1.行政管理部门\n");
     printf("2.人事部门\n");
     printf("3.财务部门\n");
     printf("4.销售部门\n");
     printf("5.研发部门\n");
     W_REGIST rg;
     char choice[16];
     scanf("%s", choice);
     getchar();
     if (strcmp(choice, "1") == 0)
     {
          rg.type_W = ADMIN;
          printf("请输入用户名\n");
          scanf("%s", rg.name);
          getchar();
          printf("请输入密码\n");
          scanf("%s", rg.pwd);
          getchar();
          printf("请输入电话号码\n");
          scanf("%s", rg.tel);
          getchar();
     }
     else if (strcmp(choice, "2") == 0)
     {
          rg.type_W = HRD;

          printf("请输入用户名\n");
          scanf("%s", rg.name);
          getchar();
          printf("请输入密码\n");
          scanf("%s", rg.pwd);
          getchar();
          printf("请输入电话号码\n");
          scanf("%s", rg.tel);
          getchar();
     }
     else if (strcmp(choice, "3") == 0)
     {
          rg.type_W = FIN;

          printf("请输入用户名\n");
          scanf("%s", rg.name);
          getchar();
          printf("请输入密码\n");
          scanf("%s", rg.pwd);
          getchar();
          printf("请输入电话号码\n");
          scanf("%s", rg.tel);
          getchar();
     }
     else if (strcmp(choice, "4") == 0)
     {
          rg.type_W = SALE;

          printf("请输入用户名\n");
          scanf("%s", rg.name);
          getchar();
          printf("请输入密码\n");
          scanf("%s", rg.pwd);
          getchar();
          printf("请输入电话号码\n");
          scanf("%s", rg.tel);
          getchar();
     }
     else if (strcmp(choice, "5") == 0)
     {
          rg.type_W = RDD;

          printf("请输入用户名\n");
          scanf("%s", rg.name);
          getchar();
          printf("请输入密码\n");
          scanf("%s", rg.pwd);
          getchar();
          printf("请输入电话号码\n");
          scanf("%s", rg.tel);
          getchar();
     }
     MSG msg;
     msg.type = W_regist;               // 消息类型为注册
     memcpy(msg.data, &rg, sizeof(rg)); // 把注册结构体的内容拷贝到消息结构体的缓冲区（数据区）

     // 把消息发送给服务器
     send(fd, &msg, sizeof(msg), 0);
     // 接受从服务器返回的结果，如果服务器不返回内容就会一直卡在这里
     recv(fd, &msg, sizeof(msg), 0);
     // 判断服务器返回的结果是否是成功的
     if (msg.type == yes)
     {
          printf("恭喜你注册成功！\n");
          mainMenu(fd,rg);
     }
     else
     {
          printf("注册失败了!\n");
     }
}

int B_registFun(int fd)
{
     printf("欢迎来到组长注册界面\n");
     printf("请选择你的项目组\n");
     printf("1.行政管理部门\n");
     printf("2.人事部门\n");
     printf("3.财务部门\n");
     printf("4.销售部门\n");
     printf("5.研发部门\n");
     B_REGIST rg;
     char choice[16];
     scanf("%s", choice);
     getchar();
     if (strcmp(choice, "1") == 0)
     {
         rg.type_B = ADMIN;
          printf("请输入用户名\n");
          scanf("%s", rg.name);
          getchar();
          printf("请输入密码\n");
          scanf("%s", rg.pwd);
          getchar();
          printf("请输入电话号码\n");
          scanf("%s", rg.tel);
          getchar();
     }
     else if (strcmp(choice, "2") == 0)
     {
          rg.type_B = HRD;
          printf("请输入用户名\n");
          scanf("%s", rg.name);
          getchar();
          printf("请输入密码\n");
          scanf("%s", rg.pwd);
          getchar();
          printf("请输入电话号码\n");
          scanf("%s", rg.tel);
          getchar();
     }
     else if (strcmp(choice, "3") == 0)
     {
          rg.type_B = FIN;
          printf("请输入用户名\n");
          scanf("%s", rg.name);
          getchar();
          printf("请输入密码\n");
          scanf("%s", rg.pwd);
          getchar();
          printf("请输入电话号码\n");
          scanf("%s", rg.tel);
          getchar();
     }
     else if (strcmp(choice, "4") == 0)
     {
          rg.type_B = SALE;
          printf("请输入用户名\n");
          scanf("%s", rg.name);
          getchar();
          printf("请输入密码\n");
          scanf("%s", rg.pwd);
          getchar();
          printf("请输入电话号码\n");
          scanf("%s", rg.tel);
          getchar();
     }
     else if (strcmp(choice, "5") == 0)
     {
          rg.type_B = RDD;
          printf("请输入用户名\n");
          scanf("%s", rg.name);
          getchar();
          printf("请输入密码\n");
          scanf("%s", rg.pwd);
          getchar();
          printf("请输入电话号码\n");
          scanf("%s", rg.tel);
          getchar();
     }
     printf("你输入的工号:%s 密码长度:%zu\n", rg.pwd, strlen(rg.pwd));
     MSG msg;
     msg.type = B_regist;               // 消息类型为注册
     memcpy(msg.data, &rg, sizeof(rg)); // 把注册结构体的内容拷贝到消息结构体的缓冲区（数据区）

     // 把消息发送给服务器
     send(fd, &msg, sizeof(msg), 0);
     // 接受从服务器返回的结果，如果服务器不返回内容就会一直卡在这里
     recv(fd, &msg, sizeof(msg), 0);
     // 判断服务器返回的结果是否是成功的
     if (msg.type == yes)
     {
          printf("恭喜你注册成功！\n");
         group_meun( fd,rg);
     }
     else
     {
          printf("注册失败了!\n");
     }
}

int B_loginFun(int fd)
{
     printf("欢迎来到组长登录界面\n");
     B_REGIST lg;
     printf("请输入用户名:");
     scanf("%s", lg.name);
     getchar();
     printf("请输入密码:");
     my_getpass(lg.pwd, sizeof(lg.pwd));
     printf("你输入的用户:%s 密码长度:%zu\n", lg.name, strlen(lg.pwd));
     MSG msg;
     msg.type = B_login;
     // 把登录结构体的字节全部拷贝到消息结构体的数据数组中
     memcpy(msg.data, &lg, sizeof(lg));
     // 把消息发送给服务器
     send(fd, &msg, sizeof(msg), 0);
     // 接受从服务器返回的结果
     recv(fd, &msg, sizeof(msg), 0);

     if (msg.type == yes)
     {
          printf("恭喜你登录成功！\n");
          group_meun(fd,lg);
          
     }
     else
     {
          printf("登录失败了!\n");
     }
}

int boss_loginFun(int fd)
{
     printf("欢迎来到管理员登录界面\n");
     LOGIN lg;
     printf("请输入用户名:");
     scanf("%s", lg.name);
     getchar();
     printf("请输入密码:");
     my_getpass(lg.pwd, sizeof(lg.pwd));
     printf("你输入的用户:%s 密码长度:%zu\n", lg.name, strlen(lg.pwd));
     if (strcmp(lg.name, "hua") == 0 && strcmp(lg.pwd, "123") == 0)
     {
          printf("恭喜你登录成功！\n");
          boss_menu(fd);
     }
     else
     {
          printf("登录失败了!\n");
     }
}